package com.yiwenup.struct._01_linear;

import com.yiwenup.struct._01_linear.queue.PriorityQueue;

public class Main {
    public static void main(String[] args) {
//        DynamicArray<Integer> array = new DynamicArray<Integer>();
//        array.add(21);
//        array.add(77);
//        array.add(88);
//        array.add(1);
//        array.add(44);
//        for (int i = 0; i < 20; i++) {
//            array.add(i);
//        }
//        System.out.println(array);

//        List<Integer> array = new DynamicArray2<Integer>();
//        array.add(21);
//        array.add(77);
//        array.add(88);
//        array.add(1);
//        array.add(44);
//        for (int i = 0; i < 20; i++) {
//            array.add(i);
//        }
//        int size = array.size();
//        for (int i = 0; i < size; i++) {
//            System.out.println(array.remove(0));
//        }
//        System.out.println(array);

//        LinkedList2<String> list = new LinkedList2<>();
//        list.add("hello");
//        list.add("world");
//        list.insert(1, "haha");
//        list.remove(0);
//        for (int i = 0; i < list.size(); i++) {
//            System.out.println(list.get(i));
//        }

//        List<String> list = new DoublyLinkedList<>();
//        list.add("hello");
//        list.add("world");
//        list.insert(1, "haha");
//        list.remove(0);
//        for (int i = 0; i < list.size(); i++) {
//            System.out.println(list.get(i));
//        }

//        List<String> list = new SingleCircleLinkedList<>();
//        list.add("hello");
//        list.add("world");
//        list.insert(0, "haha");
//        list.remove(0);
//        for (int i = 0; i < list.size(); i++) {
//            System.out.println(list.get(i));
//        }

//        List<String> list = new DoublyCircleLinkedList<>();
//        list.add("hello");
//        list.add("world");
//        list.insert(0, "haha");
//        list.remove(0);
//        for (int i = 0; i < list.size(); i++) {
//            System.out.println(list.get(i));
//        }
//        Stack<String> stack = new Stack<>();
//        stack.push("111");
//        stack.push("222");
//        stack.push("333");
//        stack.push("444");
//
//        while (!stack.isEmpty()) {
//            System.out.println(stack.pop());
//        }

//        Queue<String> queue = new Queue<>();
//        queue.enQueue("111");
//        queue.enQueue("222");
//        queue.enQueue("333");
//        queue.enQueue("444");
//        queue.enQueue("555");
//        while (!queue.isEmpty()) {
//            System.out.println(queue.deQueue());
//        }
//        Deque<String> queue = new Deque<>();
//        queue.enQueueHead("111");
//        queue.enQueueHead("222");
//        queue.enQueueTail("333");
//        queue.enQueueTail("444");
//        queue.enQueueTail("555");
//        while (!queue.isEmpty()) {
//            System.out.println(queue.deQueueTail());
//        }

//        CircleQueue<Integer> circleQueue = new CircleQueue<>();
//        for (int i = 0; i < 10; i++) {
//            circleQueue.enQueue(i);
//        }
//        for (int i = 0; i < 5; i++) {
//            circleQueue.deQueue();
//        }
//        for (int i = 15; i < 23; i++) {
//            circleQueue.enQueue(i);
//        }
//        System.out.println(circleQueue);
//        while (!circleQueue.isEmpty()) {
//            System.out.println(circleQueue.deQueue());
//        }

//        CircleDeque<Integer> deque = new CircleDeque<>();
//        for (int i = 0; i < 10; i++) {
//            deque.enQueueHead(i + 1);
//            deque.enQueueTail(i + 100);
//        }
//
//        for (int i = 0; i < 3; i++) {
//            deque.deQueueHead();
//            deque.deQueueTail();
//        }
//
//        deque.enQueueHead(11);
//        deque.enQueueHead(12);
//
//        System.out.println(deque);
//        while (!deque.isEmpty()) {
//            System.out.println(deque.deQueueHead());
//        }

        PriorityQueue<Integer> queue = new PriorityQueue<>();
        queue.enQueue(3);
        queue.enQueue(10);
        queue.enQueue(7);
        queue.enQueue(2);

        while (!queue.isEmpty()) {
            System.out.println(queue.deQueue());
        }
    }
}
